--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
tests/backend/test_hex_identifier_utils.py ec74a2651e897325b14269ae52d11b1e12f0b6e2 (ec74a265) Text, 2.65 KB
T8b949e# SPDX-License-Identifier: 0BSD
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3given
Tff7b72from T7ee787hypothesis Tff7b72import Te6edf3strategies Tff7b72as Te6edf3st
Tff7b72from T7ee787meshchatxT7ee787.T7ee787srcT7ee787.T7ee787backendT7ee787.T7ee787meshchat_utils Tff7b72import Tb4b4b4(
Te6edf3hex_identifier_to_bytesTb4b4b4,
Te6edf3normalize_hex_identifierTb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_hex_identifier_strips_uuid_separatorsTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3u Tff7b72= Ta5d6ff"Ta5d6ffBA7F0E59-FC70-4E77-9438-FA83A090F74ATa5d6ff"
Tff7b72assert Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3uTb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffba7f0e59fc704e779438fa83a090f74aTa5d6ff"
Tff7b72def Td2a8fftest_normalize_hex_identifier_strips_colons_and_spacesTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3normalize_hex_identifierTb4b4b4(Ta5d6ff"Ta5d6ffAB: CD : EFTa5d6ff"Tb4b4b4) Tff7b72== Ta5d6ff"Ta5d6ffabcdefTa5d6ff"
Tff7b72def Td2a8fftest_hex_identifier_to_bytes_uuid_styleTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3u Tff7b72= Ta5d6ff"Ta5d6ffba7f0e59-fc70-4e77-9438-fa83a090f74aTa5d6ff"
Te6edf3b Tff7b72= Te6edf3hex_identifier_to_bytesTb4b4b4(Te6edf3uTb4b4b4)
Tff7b72assert Te6edf3b Tff7b72is Tff7b72not Tff7b72None
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3bTb4b4b4) Tff7b72== T79c0ff16
Tff7b72def Td2a8fftest_hex_identifier_to_bytes_standard_hashTb4b4b4(Tb4b4b4)Tb4b4b4:
Te6edf3h Tff7b72= Ta5d6ff"Ta5d6ffaTa5d6ff" Tff7b72* T79c0ff64
Te6edf3b Tff7b72= Te6edf3hex_identifier_to_bytesTb4b4b4(Te6edf3hTb4b4b4)
Tff7b72assert Te6edf3b Tff7b72is Tff7b72not Tff7b72None
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3bTb4b4b4) Tff7b72== T79c0ff32
Tff7b72def Td2a8fftest_hex_identifier_to_bytes_invalid_returns_noneTb4b4b4(Tb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3hex_identifier_to_bytesTb4b4b4(Ta5d6ff"Ta5d6ffnot-hexTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72None
Tff7b72assert Te6edf3hex_identifier_to_bytesTb4b4b4(Ta5d6ff"Ta5d6ff"Tb4b4b4) Tff7b72is Tff7b72None
Tff7b72assert Te6edf3hex_identifier_to_bytesTb4b4b4(Tff7b72NoneTb4b4b4) Tff7b72is Tff7b72None
Tff7b72assert Te6edf3hex_identifier_to_bytesTb4b4b4(Ta5d6ff"Ta5d6ffabcTa5d6ff"Tb4b4b4) Tff7b72is Tff7b72None
Tf0883e@givenTb4b4b4(Te6edf3sTff7b72=Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stTff7b72.Td2a8ffbinaryTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stTff7b72.Td2a8ffintegersTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_hex_identifier_oracleTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
T8b949e"""Output is only lowercase hex digits, empty for non-str or empty input."""
Te6edf3out Tff7b72= Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3sTb4b4b4) T8b949e# type: ignore[arg-type]
Tff7b72if Tff7b72not Tffa657isinstanceTb4b4b4(Te6edf3sTb4b4b4, Tffa657strTb4b4b4) Tff7b72or Tff7b72not Te6edf3sTb4b4b4:
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ff"
Tff7b72return
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3outTb4b4b4, Tffa657strTb4b4b4)
Tff7b72assert Tffa657allTb4b4b4(Te6edf3c Tff7b72in Ta5d6ff"Ta5d6ff0123456789abcdefTa5d6ff" Tff7b72for Te6edf3c Tff7b72in Te6edf3outTb4b4b4)
Tff7b72assert Te6edf3out Tff7b72== Ta5d6ff"Ta5d6ff"Tff7b72.Td2a8ffjoinTb4b4b4(Te6edf3c Tff7b72for Te6edf3c Tff7b72in Te6edf3sTff7b72.Td2a8ffstripTb4b4b4(Tb4b4b4)Tff7b72.Td2a8fflowerTb4b4b4(Tb4b4b4) Tff7b72if Te6edf3c Tff7b72in Ta5d6ff"Ta5d6ff0123456789abcdefTa5d6ff"Tb4b4b4)
Tf0883e@givenTb4b4b4(Te6edf3sTff7b72=Te6edf3stTff7b72.Td2a8ffone_ofTb4b4b4(Te6edf3stTff7b72.Td2a8ffnoneTb4b4b4(Tb4b4b4)Tb4b4b4, Te6edf3stTff7b72.Td2a8fftextTb4b4b4(Te6edf3max_sizeTff7b72=T79c0ff400Tb4b4b4)Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_hex_identifier_to_bytes_oracleTb4b4b4(Te6edf3sTb4b4b4)Tb4b4b4:
T8b949e"""Accept only even-length normalized hex. Reject odd or empty."""
Te6edf3n Tff7b72= Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3sTb4b4b4)
Te6edf3b Tff7b72= Te6edf3hex_identifier_to_bytesTb4b4b4(Te6edf3sTb4b4b4)
Tff7b72if Tff7b72not Te6edf3n Tff7b72or Tffa657lenTb4b4b4(Te6edf3nTb4b4b4) Tff7b72% T79c0ff2Tb4b4b4:
Tff7b72assert Te6edf3b Tff7b72is Tff7b72None
Tff7b72return
Tff7b72assert Te6edf3b Tff7b72is Tff7b72not Tff7b72None
Tff7b72assert Tffa657isinstanceTb4b4b4(Te6edf3bTb4b4b4, Tffa657bytesTb4b4b4)
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3bTb4b4b4) Tff7b72== Tffa657lenTb4b4b4(Te6edf3nTb4b4b4) Tff7b72/Tff7b72/ T79c0ff2
Tff7b72assert Te6edf3bTff7b72.Td2a8ffhexTb4b4b4(Tb4b4b4) Tff7b72== Te6edf3n
Tf0883e@givenTb4b4b4(Te6edf3hTff7b72=Te6edf3stTff7b72.Td2a8fffrom_regexTb4b4b4(Ta5d6ffrTa5d6ff"Ta5d6ff[0-9a-fA-F]Ta5d6ff{Ta5d6ff0,200}Ta5d6ff"Tb4b4b4)Tb4b4b4)
Tff7b72def Td2a8fftest_hex_identifier_length_invariantTb4b4b4(Te6edf3hTb4b4b4)Tb4b4b4:
Te6edf3n Tff7b72= Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3hTb4b4b4)
Te6edf3b Tff7b72= Te6edf3hex_identifier_to_bytesTb4b4b4(Te6edf3hTb4b4b4)
Tff7b72if Tff7b72not Te6edf3n Tff7b72or Tffa657lenTb4b4b4(Te6edf3nTb4b4b4) Tff7b72% T79c0ff2Tb4b4b4:
Tff7b72assert Te6edf3b Tff7b72is Tff7b72None
Tff7b72elseTb4b4b4:
Tff7b72assert Te6edf3b Tff7b72is Tff7b72not Tff7b72None
Tff7b72assert Tffa657lenTb4b4b4(Te6edf3bTb4b4b4) Tff7b72== Tffa657lenTb4b4b4(Te6edf3nTb4b4b4) Tff7b72/Tff7b72/ T79c0ff2
Tf0883e@givenTb4b4b4(
Te6edf3aTff7b72=Te6edf3stTff7b72.Td2a8fffrom_regexTb4b4b4(Ta5d6ffrTa5d6ff"Ta5d6ff[0-9a-fA-F]Ta5d6ff{Ta5d6ff2,64}Ta5d6ff"Tb4b4b4)Tb4b4b4,
Te6edf3bTff7b72=Te6edf3stTff7b72.Td2a8fffrom_regexTb4b4b4(Ta5d6ffrTa5d6ff"Ta5d6ff[0-9a-fA-F]Ta5d6ff{Ta5d6ff2,64}Ta5d6ff"Tb4b4b4)Tb4b4b4,
Tb4b4b4)
Tff7b72def Td2a8fftest_normalize_concat_equals_normalize_joinTb4b4b4(Te6edf3aTb4b4b4, Te6edf3bTb4b4b4)Tb4b4b4:
Tff7b72assert Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3a Tff7b72+ Te6edf3bTb4b4b4) Tff7b72== Te6edf3normalize_hex_identifierTb4b4b4(
Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3aTb4b4b4) Tff7b72+ Te6edf3normalize_hex_identifierTb4b4b4(Te6edf3bTb4b4b4)Tb4b4b4,
Tb4b4b4)
──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────